//#include <Arduino_FreeRTOS.h>

// define two tasks for Blink & AnalogRead
void TaskBlink(void* pvParameters);
void TaskAnalogRead(void* pvParameters);

// the setup function runs once when you press reset or power the board
void setup() {

    // initialize serial communication at 9600 bits per second:
    Serial.begin(115200);

    while (!Serial) {
        ; // wait for serial port to connect. Needed for native USB, on LEONARDO, MICRO, YUN, and other 32u4 based boards.
    }

    // Now set up two tasks to run independently.
    xTaskCreate(
        TaskBlink
        , "Blink"   // A name just for humans
        , 2048  // This stack size can be checked & adjusted by reading the Stack Highwater
        , NULL
        , 2  // Priority, with 3 (configMAX_PRIORITIES - 1) being the highest, and 0 being the lowest.
        , NULL);

    xTaskCreate(
        TaskAnalogRead
        , "AnalogRead"
        , 2048  // Stack size
        , NULL
        , 1  // Priority
        , NULL);

    // Now the task scheduler, which takes over control of scheduling individual tasks, is automatically started.
}

void loop()
{
    // Empty. Things are done in Tasks.
}

/*--------------------------------------------------*/
/*---------------------- Tasks ---------------------*/
/*--------------------------------------------------*/

void TaskBlink(void* pvParameters)  // This is a task.
{
    (void)pvParameters;

    for (;;) // A Task shall never return or exit.
    {
        log_n("task1 is running!!");
        vTaskDelay(1000/ portTICK_PERIOD_MS);
    }
}

void TaskAnalogRead(void* pvParameters)  // This is a task.
{
    (void)pvParameters;

    for (;;)
    {
        log_n("task1 is running!!");
        vTaskDelay(500 / portTICK_PERIOD_MS);
    }
}

